package rodrigosetti.colorstrike.fase;

import rodrigosetti.colorstrike.core.Vetor2D;

public abstract class Personagem extends Elemento implements Interagivel{
	
	protected Vetor2D posicao;
	protected Vetor2D velocidade;
	
	public Personagem(Fase fase, int posx, int posy)
	{
		super(fase);
		posicao = new Vetor2D(posx, posy);
		velocidade = new Vetor2D();
	}

	/**
	 * Colide com bloco
	 * @param e
	 */
	public void interagir(Elemento e) {

		if (e instanceof Bloco)
		{
		
			switch (this.colide(e))
			{
			case Elemento.SUPERIOR:
				this.posicao.y -= ((this.posicao.y + this.getHeight()) - e.getY()) - 1;
				this.velocidade.y *= -fase.atrito;			
				break;
			case Elemento.INFERIOR:
				this.posicao.y += (e.getY()+e.getHeight()) - (this.posicao.y) + 1;
				this.velocidade.y *= -fase.atrito;;
				break;
			case Elemento.LATERAL_ESQ:
				this.posicao.x -= (this.posicao.x + this.getWidth()) - e.getX() + 1;
				this.velocidade.x *= -fase.atrito;
				break;
			case Elemento.LATERAL_DIR:
				this.posicao.x += (e.getX()+e.getWidth()) - (this.posicao.x) + 1; 
				this.velocidade.x *= -fase.atrito;;
				break;
			}
		}
	}

	public void atualizar() {
		posicao.somar(velocidade);
		velocidade.multiplicar(fase.atritoAr);
		velocidade.y += fase.gravidade;
		
		sprite.setPosition((int)posicao.x, (int)posicao.y);		
	}


}
